package cyc2018.贪心思想;

/**
 * 非递减数列
 */
public class Test665 {

    // 遍历整个数组，将所有数据调整为非递减
    // 最后看一下调整的次数是否小于等于 1 即可
    public boolean checkPossibility(int[] nums) {
        int count = 0;
        for (int i = 1; i < nums.length; i++) {
            // 若是增序列的，就 continue
            if (nums[i] >= nums[i - 1]) {
                continue;
            }
            count++;
            // 若呈现递减的形式：
            if (i - 2 >= 0 && nums[i - 2] >= nums[i]) {
                // 1. 此情况下，要将 nums[i] 变大，整体呈现上升趋势
                nums[i] = nums[i - 1];
            } else {
                // 2. nums[i - 1] > nums[i] 的时候将 nums[i - 1] 变小，整体上升
                // 为什么不将 nums[i] 变大？因为要防止，nums[i] > nums[i+1] 的情况
                nums[i - 1] = nums[i];
            }
        }
        return count <= 1;
    }
}
